package de.nroz.model;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.swing.table.AbstractTableModel;

public class ArtikelModel extends AbstractTableModel
{
	/**
     * 
     */
	private static final long serialVersionUID = 1L;

	private final String[] columnNames =
	{ "Artikel", "Artikel-Nr", "Ort", "EK-R-Preis", "EK-FA_Preis", "VK-Preis", "Gewinn", "EK-Datum", "VK-Datum",
			"Bezahlt", "Vertriebsweg", "Beschreibung" };

	private final Class<?>[] columnClasses =
	{ String.class, String.class, String.class, BigDecimal.class, BigDecimal.class, BigDecimal.class, BigDecimal.class,
			Date.class, Date.class, Boolean.class, String.class, String.class };

	private List<Artikel> rows = new ArrayList<Artikel>();

	public int getColumnCount()
	{
		return columnNames.length;
	}

	public int getRowCount()
	{
		return rows.size();
	}

	public Object getValueAt(int rowIndex, int columnIndex)
	{
		Artikel art = rows.get(rowIndex);

		switch (columnIndex)
		{
		case 0:
			return art.getArtikel();
		case 1:
			return art.getArtNr();
		case 2:
			return art.getOrt();
		case 3:
			return art.getEkRPreis();
		case 4:
			return art.getEkFaPreis();
		case 5:
			return art.getVkPreis();
		case 6:
			return art.getGewinn();
		case 7:
			return art.getEkDatum();
		case 8:
			return art.getVkDatum();
		case 9:
			return art.isBezahlt();
		case 10:
			return art.getKanal();
		case 11:
			return art.getBeschreibung();
		default:
			return null;
		}
	}

	public String getColumnName(int columnIndex)
	{
		return columnNames[columnIndex];
	}

	public Class<?> getColumnClass(int columnIndex)
	{
		return columnClasses[columnIndex];
	}

//	public void setValueAt(Object v, int rowIndex, int columnIndex)
//	{
//		Artikel art = rows.get(rowIndex);
//
//		switch (columnIndex)
//		{
//		case 0:
//			art.setArtikel((String) v);
//			break;
//		case 1:
//			art.setArtNr((String) v);
//			break;
//		case 2:
//			art.setOrt((String) v);
//			break;
//		case 3:
//			art.setEkRPreis((BigDecimal) v);
//			break;
//		case 4:
//			art.setEkFaPreis((BigDecimal) v);
//			break;
//		case 5:
//			art.setVkPreis((BigDecimal) v);
//			break;
//		case 7:
//			art.setEkDatum((Date) v);
//			break;
//		case 8:
//			art.setVkDatum((Date) v);
//			break;
//		case 9:
//			art.setBezahlt((Boolean) v);
//			break;
//		case 10:
//			art.setKanal((String) v);
//			break;
//		case 11:
//			art.setBeschreibung((String) v);
//			break;
//		}
//		fireTableCellUpdated(rowIndex, columnIndex);
//	}

	public boolean isCellEditable(int rowIndex, int columnIndex)
	{
		return false;
	}

	public void add(Artikel obj)
	{
		rows.add(obj);
		fireTableRowsInserted(rows.size() - 1, rows.size() - 1);
	}

	public void delete(Artikel obj)
	{
		int idx = rows.indexOf(obj);
		rows.remove(idx);
		fireTableRowsDeleted(idx, idx);
	}

	public Artikel get(int index)
	{
		return rows.get(index);
	}
}
